package ar.com.binarit

import ar.com.binarit.entities.Mubbia
import ar.com.binarit.entities.ParametrosSistema

class MubbiasController extends AbstractMubbiaController {

    def index() {
		getMapaDatos(null)
	}
	
	def show(){
		def mubbiaInstance = mubbiaService.obtenerMubbia(params.mubbiaId)
		def result = [mubbiaInstance: mubbiaInstance]
		result.putAll(getMapaDatos(mubbiaInstance))
		result
	}
	
	def getMapaDatos(mubbiaInstance){
		[
			mubbiasRecientes: mubbiasRecientes,
			mubbiasPorConcretar: mubbiasPorConcretar,
			mubbiasCerradas: mubbiasCerradas,
			mubbiasDestacadas: mubbiasDestacadas
		] + super.getMapaDatos(mubbiaInstance)
	}
	
	def getMubbiasPorConcretar(){
		def categoria = params?.categoriaId?.toLong()
		return Mubbia.createCriteria().list(max: parametrosSistema.mubbiasPorConcretar){
			def fecha = new Date()
			
			between("fechaFinalizacion", fecha, fecha.plus(7))
			isNotNull("fechaPublicacion")
			
			if (categoria){
				eq("categoria.id", categoria)
			}
		}
	}
	
	def getMubbiasCerradas(){
		def categoria = params?.categoriaId?.toLong()
		return Mubbia.createCriteria().list(max: parametrosSistema.mubbiasCerradas){
			lt("fechaFinalizacion", new Date())
			isNotNull("fechaPublicacion")
			
			if (categoria){
				eq("categoria.id", categoria)
			}
		}
	}
	
	def getMubbiasDestacadas(){
		def categoria = params?.categoriaId?.toLong()
		return Mubbia.createCriteria().list(max: parametrosSistema.mubbiasDestacadas){
			def fecha = new Date()
			between("fechaFinalizacion", fecha, fecha.plus(30))
			isNotNull("fechaPublicacion")
			
			if (categoria){
				eq("categoria.id", categoria)
			}
			
			sizeGt("usuariosParticipantes", parametrosSistema.cantidadPersonasDestacadas)
		}
	}
	
	def getMubbiasRecientes(){
		
		def categoria = params?.categoriaId?.toLong()
		return Mubbia.createCriteria().list(max: 5){
			order("fechaPublicacion", "desc")
			
			isNotNull("fechaPublicacion")
			if (categoria){
				eq("categoria.id", categoria)
			}
		}
		
		return Mubbia.list(max: 5).sort {}
//		def categoria = params?.categoria
//		return Mubbia.createCriteria().list(max: parametrosSistema.mubbiasCerradas){
//			lt("fechaFinalizacion", new Date())
//			isNotNull("fechaPublicacion")
//			
//			sizeGt("usuariosParticipantes", parametrosSistema.mubbiasDestacadas)
//		}
	}
}